from typing import *
import tkinter as tk
from tkinter import *


class 按钮(Button):
    out = ""

    def __init__(self, master) -> None:
        super().__init__(master, text="确定", command=self.__bt_fun)
        self.root = master

    def __bt_fun(self):
        self.root.destroy()


class 输入框:
    out = ""

    def __init__(self, 说明) -> None:
        self.root = tk.Tk()
        self.root.title = "fff"
        self.root.geometry("200x100")

        l = tk.Label(self.root, text=说明)
        l.pack()

        self.et = tk.Entry(self.root)
        self.et.pack()

        bt = tk.Button(self.root, text="确定", command=self.__bt_fun)
        bt.pack()
        self.root.mainloop()

    def __bt_fun(self):
        self.out = self.et.get()
        self.root.destroy()

    def get(self):
        return self.out


class 单选框:
    out = ""

    def __init__(self, 说明, list: List[str]) -> None:
        self.root = tk.Tk()

        Label(self.root, text=说明).pack()

        self.v = StringVar()
        self.v.set(1)

        tk.Label(self.root, text=说明).pack

        for index, li in enumerate(list):
            tk.Radiobutton(
                self.root, text=li, variable=self.v, value=li, command=self.set_out
            ).pack(anchor="w")

        bt = 按钮(self.root)
        bt.pack()

        self.root.mainloop()

    def set_out(self):
        self.out = str(self.v.get())

    def get(self):
        return self.out


class 多选框:
    def __init__(self, 说明, 选项列表: List[str]) -> None:
        self.root = tk.Tk()
        self.选项列表 = 选项列表
        Label(self.root, text=说明).pack()

        # 使用列表保存每个选项的状态
        self.变量列表 = []
        self.结果列表 = []

        # 为每个选项创建一个Checkbutton
        for 选项 in 选项列表:
            var = BooleanVar()
            chk = tk.Checkbutton(self.root, text=选项, variable=var)
            chk.pack(anchor="w")
            self.变量列表.append(var)

        # 确认按钮
        bt = tk.Button(self.root, text="确认", command=self.set1)
        bt.pack()

        self.root.mainloop()

    def set1(self):
        # 获取当前选中的选项，并打印
        结果列表 = [选项.get() for 选项 in self.变量列表]
        self.list_out = []
        for i in range(0, len(结果列表)):
            if 结果列表[i]:
                self.list_out.append(self.选项列表[i])
        # 点击确认后关闭对话框
        self.root.destroy()

    def get(self):
        return self.list_out


class 文本框:
    def __init__(self, 说明) -> None:
        self.root = tk.Tk()
        tk.Label(self.root, text=说明).pack()
        按钮(self.root).pack()
        self.root.mainloop()
        pass


if __name__ == "__main__":
    # tc=输入框('is haha ').get()
    # print(tc)
    文本框("ffff")
    """
  tc=tk.Tk()

  bt=按钮(tc)
  bt.setout('按')
  bt.pack()
  
  tc.mainloop() 
  """
    # tc=单选框('锁门',[1,2,3])
    # print(tc)
